/**
 * 医疗机构注册
 * by zlh
 */
//功能栏
YljgzcBtn = Ext.extend(Ext.Toolbar,{
	constructor : function(){
		YljgzcBtn.superclass.constructor.call(this,{
			items : [{
				text : '增加',
				iconCls : 'icon-add',
				handler : this.onAdd,
				scope : this
			},'-',{
				text : '修改',
				iconCls : 'icon-edit',
				handler : this.onEdit,
				scope : this
			},'-',{
				text : '删除',
				iconCls : 'icon-remove',
				handler : this.onDelete,
				scope : this
			}]
		})
	},
	onAdd : function(){
		this.fireEvent('onAdd',this);
	},
	onEdit : function(){
		this.fireEvent('onEdit',this);
	},
	onDelete : function(){
		this.fireEvent('onDelete',this);
	}
});

//*************************************************
//添加
YljgzcInputFormPanel = Ext.extend(Ext.form.FormPanel,{
	allowBlankFont : "<font color=red>*</font>",
	zgjgStore : null,
	constructor : function(b){
		Ext.applyIf(this,b);
		YljgzcInputFormPanel.superclass.constructor.call(this,{
			height : 300,
			width : 600,
			frame : true,
			border : false,
			autoScroll : true,
			labelAlign : 'right',
			url : '../../health/yljgSaveOrUpdate.do',
			method : 'POST',
			labelWidth : 80,
			items : [{
				layout : "column",
				border : false,
	    		items : [{
	    			columnWidth : .5,
					layout : "form",
					defaultType : 'textfield',
					border : false,
					items : [{
						fieldLabel : '机构号' + this.allowBlankFont,
						name : 'deptId',
						disabled : this.flag ? true : false,
						anchor : '90%',
						allowBlank : false
					},{
						xtype : 'textfield',
						fieldLabel : '机构编码' + this.allowBlankFont,
						name : 'deptCode',
						anchor : '90%',
						allowBlank : false
					},{
						fieldLabel : '机构类型',
						hiddenName : "deptType",
						xtype : 'combo',
						forceSelection : true, //用户不能自己输入,只能选择列表中有的记录 
						mode : "local",
						triggerAction : "all",
						store : new Ext.data.SimpleStore({
							fields : ["value","text"],
							data: [['综合医院', '综合医院'], ['中医医院', '中医医院'], ['专科医院', '专科医院'], ['中西医结合医院', '中西医结合医院'], 
								   ['妇幼保健所/院', '妇幼保健所/院'], ['专科疾病防治院', '专科疾病防治院'], ['专科疾病防治所/站/中心', '专科疾病防治所/站/中心'], 
								   ['疗养院', '疗养院'], ['社区卫生服务中心/站', '社区卫生服务中心/站'], ['卫生院', '卫生院'], 
								   ['门诊部/诊所/卫生所/医务室', '门诊部/诊所/卫生所/医务室'], ['急救中心', '急救中心'], ['采供血机构', '采供血机构'],
								   ['妇幼保健院/所/站', '妇幼保健院/所/站'], ['专科疾病防治院', '专科疾病防治院'], ['疾病预防控制中心', '疾病预防控制中心'], 
								   ['卫生监督所(局)', '卫生监督所(局)'], ['卫生社会团体', '卫生社会团体'], ['卫生行政管理部门', '卫生行政管理部门'], 
								   ['医学科研机构', '医学科研机构'], ['医学教育机构', '医学教育机构'], ['健康教育所/站/中心', '健康教育所/站/中心'],
								   ['其他卫生机构', '其他卫生机构']]
						}),
						valueField : "value",
						displayField : "text",
						anchor : '90%'
					},{ 
						fieldLabel : '联系电话',
						name : "phone",
						xtype : 'textfield',
						anchor : '90%'
					},{
						fieldLabel : '邮编',
						regex : /^\d+$/,
						regexText : '邮件格式错误',
						name : "zipcode",
						anchor : '90%'
					}]
	    		},{
	    			columnWidth : .5,
					layout : "form",
					defaultType : 'textfield',
					border : false,
					items : [{
						xtype : 'hidden',
						name : 'hdeptId',
						value : this.flag ? this.record.get('deptId') : ""
					},{
						xtype : 'hidden',
						name : 'curState'
					},{ 
						fieldLabel : '机构名称' + this.allowBlankFont,
						name : "deptName",
						allowBlank : false,
						anchor : '90%'
					},{ 
						fieldLabel : '主管机构',
						hiddenName : "parentId",
						xtype : 'combo',
						forceSelection : true, //用户不能自己输入,只能选择列表中有的记录 
						mode : "remote",
						triggerAction : "all",
						store : this.getZgjgStore(this.flag ? this.record.get('deptId') : ""),
						pageSize : 8,
						listWidth : 300,
						minChars : 1,
						valueField : "value",
						displayField : "text",
						anchor : '90%',
						queryName : 'deptName',
						listeners : {
							render : function(combo){
								if(this.flag){
									var parentId = this.record.get('parentId');
									var parentName = this.record.get('parentName');
									var Record = combo.getStore().recordType;
									var record = new Record();
		        					record.set("value",parentId);
		        					record.set("text",parentName);
		        					combo.getStore().add(record);
								}
							},
							scope : this
						}
					},{ 
						fieldLabel : '等级',
						hiddenName : "level",
						xtype : 'combo',
						forceSelection : true, //用户不能自己输入,只能选择列表中有的记录 
						mode : "local",
						triggerAction : "all",
						store:new Ext.data.SimpleStore({
							fields : ["value","text"],
							data : [["一级甲等","一级甲等"],["一级乙等","一级乙等"],["一级丙等","一级丙等"],
							["二级甲等","二级甲等"],["二级乙等","二级乙等"],["二级丙等","二级丙等"],["三级甲等","三级甲等"],
							["三级乙等","三级乙等"],["三级丙等","三级丙等"],["未定级","未定级"]]
						}),
						valueField : "value",
						displayField : "text",
						anchor : '90%'
					},{
						fieldLabel : '负责人',
					 	name : 'leader',
					 	anchor : '90%'
					},{ 
						fieldLabel : '地址',
						name : "address",
						anchor : '90%'
					}]
	    		}]
			}]
		})
	},
	clearForm : function(){
		this.getForm().reset();
	},
	getZgjgStore : function(_deptId){
		if(this.zgjgStore == null){
			this.zgjgStore = new Ext.data.JsonStore({
				url : '../../health/deptList.do',
				baseParams : {
					deptId : _deptId
				},
				method : 'POST',
				root : 'data',
				totalProperty : 'totalProperty',
				root : 'data',
				fields : ['value','text']
			})
		}
		return this.zgjgStore;
	}
})
//***********************************************//
//添加
YljgzcInputWin = Ext.extend(Ext.Window,{
	yljgzcInputFormPanel : null,
	constructor : function(b){
		this.yljgzcInputFormPanel = new YljgzcInputFormPanel(b);
		YljgzcInputWin.superclass.constructor.call(this,{
			modal : true,
			layout : 'fit',
			buttonAlign : "center", //按钮居中
			autoHeight : true,
			width : 600,
			constrain : true,
			items : this.yljgzcInputFormPanel,
			buttons : [
			{
				text : '确定',
				iconCls : "btn-ok",
				handler : this.onSubmitClick,
				scope : this
			},'-',{
				text : '取消',
				iconCls : "btn-cancel",
				handler : function(){
					this.close();
				},
				scope : this
			}
			]
		}),
		this.addEvents('submit');
	},
   	clearWin : function(){
   		this.yljgzcInputFormPanel.clearForm();
   	},
   	onSubmitClick : function(){
   		if(this.yljgzcInputFormPanel.form.isValid())
   			this.fireEvent('submit',this,this.yljgzcInputFormPanel);
   		else{
   			var values = this.yljgzcInputFormPanel.getForm().getValues();
   			Ext.ux.Toast.msg('提示信息',"表单验证不通过");
   		}
   			
   	},
	load : function(_record){
		this.yljgzcInputFormPanel.getForm().loadRecord(_record);
		this.show();
	}
});
//*********************************
//修改WIN
AddYljgzcWin = Ext.extend(YljgzcInputWin,{
	title :　"添加医疗机构"
});
//修改WIN
UpdateYljgzcWin = Ext.extend(YljgzcInputWin,{
	title :　"修改医疗机构"
});
// 查询的工具栏
YljgzcSearchTbar = Ext.extend(Ext.Toolbar, {
	recordSortStore : null,
	constructor : function() {
		this.recordSortStore = this.getRecordSortStore;
		YljgzcSearchTbar.superclass.constructor.call(this, {
			items : ['机构名称：', {
						xtype : 'textfield',
						name : 'deptName',
						width : 100
					},'-','机构类型：',{
						xtype : 'combo',
						store: new Ext.data.SimpleStore({
			                fields: ['value', 'text'],
			                data: [['综合医院', '综合医院'], ['中医医院', '中医医院'], ['专科医院', '专科医院'], ['中西医结合医院', '中西医结合医院'], 
								   ['妇幼保健所/院', '妇幼保健所/院'], ['专科疾病防治院', '专科疾病防治院'], ['专科疾病防治所/站/中心', '专科疾病防治所/站/中心'], 
								   ['疗养院', '疗养院'], ['社区卫生服务中心/站', '社区卫生服务中心/站'], ['卫生院', '卫生院'], 
								   ['门诊部/诊所/卫生所/医务室', '门诊部/诊所/卫生所/医务室'], ['急救中心', '急救中心'], ['采供血机构', '采供血机构'],
								   ['妇幼保健院/所/站', '妇幼保健院/所/站'], ['专科疾病防治院', '专科疾病防治院'], ['疾病预防控制中心', '疾病预防控制中心'], 
								   ['卫生监督所(局)', '卫生监督所(局)'], ['卫生社会团体', '卫生社会团体'], ['卫生行政管理部门', '卫生行政管理部门'], 
								   ['医学科研机构', '医学科研机构'], ['医学教育机构', '医学教育机构'], ['健康教育所/站/中心', '健康教育所/站/中心'],
								   ['其他卫生机构', '其他卫生机构']]
			            }),
			            displayField: 'text',
			            valueField: 'value',
			            hiddenName: 'deptType',
			            mode: 'local',
			            emptyText: '请选择',
			            forceSelection : true,
			            triggerAction: 'all',//控件显示全部的Item，不过滤
						width : 200
					}, '-', {
						text : "查询",
						iconCls : 'icon-search',
						tooltip : '查询记录',
						handler : function() {
			        		this.onSerchClick();
						},
						scope : this
					}]
		})
	},
	onSerchClick : function() {
		this.fireEvent('onSerchClick', this);
	}
});
YljgzcSearchPanel = Ext.extend(Ext.form.FormPanel, {
	yljgzcSearchTbar : null,
	constructor : function() {
		this.yljgzcSearchTbar = new YljgzcSearchTbar();
		YljgzcSearchPanel.superclass.constructor.call(this, {
			defaultType : 'textfield',
			border : false,
			frame : false,
			items : [this.yljgzcSearchTbar]
		})
	}
});
YljgzcGridPanel = Ext.extend(Ext.grid.GridPanel,{
	addYljgzcWin : null,
	updateYljgzcWin : null,
	yljgzcBtn : null,
	yljgzcSearchPanel : null,
	yljgzcStore : null,
	yljgzcCSM : null,
	yljgzcCM : null,
	constructor : function(){
		this.yljgzcBtn = new YljgzcBtn();
		this.yljgzcSearchPanel = new YljgzcSearchPanel();
		this.initUIComponents();
		YljgzcGridPanel.superclass.constructor.call(this,{
			title : '▪ 您现在所在的位置：医疗机构注册',
			border : true,
			renderTo : Ext.getBody(),
			viewConfig : {
				forceFit : true
			},
			stripeRows : true,//斑马线
			tbar : this.yljgzcSearchPanel,
			colModel : this.yljgzcCM,
			store : this.yljgzcStore,
			sm : this.yljgzcCSM,
			bbar : new Ext.PagingToolbar({
				pageSize : 20,
				store : this.yljgzcStore,
				displayInfo : true,
				displayMsg : "显示第{0}-{1}条记录，一共{2}条记录",
				emptyMsg : "没有记录"
			})
		}),
		this.yljgzcBtn.on('onAdd',this.onAdd,this);
		this.yljgzcBtn.on('onEdit',this.onEdit,this);
		this.yljgzcBtn.on('onDelete',this.onDelete,this);
		this.yljgzcBtn.on('onViewRight',this.onViewRight,this);
		this.yljgzcSearchPanel.yljgzcSearchTbar.on('onSerchClick',this.loadList,this);
		this.loadList();
	},
	initUIComponents : function(){
		this.yljgzcCSM = new Ext.grid.CheckboxSelectionModel();
		this.yljgzcStore = new Ext.data.JsonStore({
			url : '../../deptList.do',
			method : 'POST',
			totalProperty : 'totalCount',
			root : 'data',
			fields : ["deptId","deptCode","deptName","level","deptType","curState",
			"leader","phone","address","zipcode","regTime","parentName","parentId"]
		});
		this.yljgzcCM = new Ext.grid.ColumnModel([this.yljgzcCSM,{
			header : '机构号',
			dataIndex : 'deptId',
			align : 'center'
		},{
			header : '机构编码',
			dataIndex : 'deptCode',
			align : 'center'
		},{
			header : '机构名称',
			dataIndex : 'deptName',
			align : 'center'
		},{
			header : '等级',
			dataIndex : 'level',
			align : 'center'
		},{
			header : '机构类型',
			width : 150,
			dataIndex : 'deptType',
			align : 'center'
		},{
			header : '负责人',
			dataIndex : 'leader',
			align : 'center'
		},{
			header : '联系电话',
			dataIndex : 'phone',
			align : 'center'
		},{
			header : '地址',
			dataIndex : 'address',
			align : 'center'
		},{
			header : '邮编',
			dataIndex : 'zipcode',
			align : 'center'
		},{
			header : '注册时间',
			dataIndex : 'regTime',
			align : 'center'
		}]);
	},
	listeners : {
		'render' : function() {
			this.yljgzcBtn.render(this.tbar);
		}  
	},
	loadList : function(_searchPanel){
		if(_searchPanel != null){
			var values = this.yljgzcSearchPanel.getForm().getValues();
			this.getStore().baseParams={
				deptName : values.deptName,
				deptType : values.deptType
			}
		}
		this.getStore().load({
			params : {
				start : 0,
				limit : 20
			}
		});
	},
	insertUpdateRecord : function(_win,_form){
		var self = this;
		_form.form.submit({
			waitTitle : "请稍等",
			waitMsg : "正在保存您的信息",
			success : function(form,action){
				if(action.result.success){
					Ext.ux.Toast.msg('提示信息',"保存成功！");
					_win.close();
					self.getStore().reload();
				}
			},
			failure : function(form, action) {
				if(action.result == null){
					Ext.ux.Toast.msg('提示信息',"保存信息失败,请联系管理员！");
				}else{
					Ext.ux.Toast.msg('提示信息',action.result.message);
				}
			}
		});
	},
	onAdd : function(){
		this.addYljgzcWin = new AddYljgzcWin(false);
		this.addYljgzcWin.mon(this.addYljgzcWin,'submit',this.insertUpdateRecord,this);
		this.addYljgzcWin.show();
	},
	onEdit : function(){
		if (this.getSelectionModel().getCount() == 0) { // 一条都没选
			Ext.ux.Toast.msg('信息提示','您未选择任何记录，请选择要修改的记录!');
		}else if(this.getSelectionModel().getCount() > 1){
			Ext.ux.Toast.msg('信息提示','您选择了多条记录，一次只能修改一条记录!');
		}else{
			var record = this.getSelectionModel().getSelected();
			this.updateYljgzcWin = new UpdateYljgzcWin({
				flag : true,
				record :　record
			});
			this.updateYljgzcWin.mon(this.updateYljgzcWin,'submit',this.insertUpdateRecord,this);
			this.updateYljgzcWin.load(record);
		}
	},
	onDelete : function(){
		if (this.getSelectionModel().getCount() == 0) { // 一条都没选
			Ext.ux.Toast.msg('信息提示','您未选择任何记录，请选择要修改的记录!');
		}else{
			var self = this;
			var records = this.getSelectionModel().getSelections();
			var ids = new Array(records.length);
			for(var i =0;i < records.length ; i++){
				ids[i] = records[i].get('deptId');
			}
			Ext.MessageBox.confirm('删除确认', '您确认要删除记录吗？按是将删除选中的记录！',
				function(btn) {
					if(btn=='no'){
						return;
					}
					self.del(ids,records);
				}
			)
		}
	},
	del : function(ids,records){
		var self = this;
		Ext.Ajax.request({
			url : '../../health/yljgDelete.do',
			params : {
				ids : ids
			},
			method : "post",
			success : function(response) {
				var result = Ext.decode(response.responseText);
				if(result.success){
					Ext.ux.Toast.msg('提示信息','删除成功!');
					self.getStore().reload();
				}else{
					Ext.ux.Toast.msg('提示信息','删除失败，请联系管理员!');
				}
			},
			failure : function(form, action) {
				Ext.ux.Toast.msg('提示信息',"删除失败,请联系管理员!");
			}
		});
	}
});
